/**
* Скрипты для постов
*/
/**
* Функция для обработки формы опроса в посте-вопросе.
*/
function posts_poll(form, button, action, target_id){
$(form).ajaxSubmit({
data: {ti: target_id, action: action},
form: $(form),
beforeSubmit: ajaxFormBeforSubmit,
success: ajaxFormSuccess(function(json, statusText, xhr, jqForm){
$(form).replaceWith(json.html);
})
});
}
/**
* Функция для голосования за посты.
*/
function posts_vote(link, target_id, target_type, vote){
$.post('/json/vote/',{ti:target_id, tt:target_type, v:vote},function(json){
if(json.messages == 'ok'){
var voting = $('#infopanel_post_'+target_id+' .voting');
// выделим отмеченный пункт.
if(vote === 1){
voting.addClass('voted_plus').attr('title','Вы проголосовали положительно.');
}else if(vote === -1){
voting.addClass('voted_minus').attr('title','Вы проголосовали отрицательно.');
}else{
voting.addClass('voted');
$('.plus',voting).replaceWith('');
$('.minus',voting).replaceWith('');
}
// обновим кол-во голосов
$('.score', voting).replaceWith(''+json.score+'');
// раскрасим positive / negative
$('.mark', voting).attr('class','mark '+json.sign);
// обновим строку с кол-вом доступных голосов в шапке сайта
$('#charge_string').html(json.charge_string);
}else{
show_system_error(json);
}
},'json');
return false;
}
/**
* Функция для добавления поста в избранное.
*/
function posts_add_to_favorite(link, target_type, target_id){
var tags = $('#post_'+target_id+' .tags');
var favs_count = $('#infopanel_post_'+target_id+' .favs_count');
var count = favs_count.text() ? parseInt(favs_count.text()) : 0;
if($(link).hasClass('add')){
var action = 'add';
}else{
var action = 'remove';
}
$.post('/json/favorites/', {tt: target_type, ti: target_id, action: action}, function(json){
if(json.messages == 'ok'){
if(action == 'add'){
$.jGrowl('Пост добавлен в избранное', { });
$(link).removeClass('add').addClass('remove');
// теперь нужно показать кнопку "Изменить свои метки".
if($('.favourites_edit_tags',tags).length == 0){
tags.append('
Изменить свои метки');
}
favs_count.text(count + 1);
}else{
$.jGrowl('Пост удален из избранного', { });
$(link).addClass('add').removeClass('remove');
// удалим ссылку "Изменить свои метки".
$('.favourites_edit_tags',tags).remove();
$('#edit_tags_form').hide();
var new_count = count - 1;
favs_count.text(new_count ? new_count : '');
$('#post_'+target_id+' .tags li.fav').remove();
}
}else{
show_system_error(json)
}
},'json');
return false;
}
/**
* Функция для показа формы редактирования собственных тегов.
*/
function show_edit_tags(link, target_type, target_id){
var edit_tags_form = $('#edit_tags_form');
$('input[name="tt"]',edit_tags_form).val(target_type);
$('input[name="ti"]',edit_tags_form).val(target_id);
var tags = [];
$('#post_'+target_id+' ul.tags li.fav a').each(function(){
tags[tags.length] = $(this).text();
});
$('input[name="tags_string"]',edit_tags_form).val( tags.join(', ') ).focus();
$('#post_'+target_id+' .tags').after(edit_tags_form);
edit_tags_form.show();
$('input[name="tags_string"]',edit_tags_form).focus();
return false;
}
/**
* Функция для закрытия формы редактирования собственных тегов.
*/
function close_edit_tags(){
$('#edit_tags_form').hide();
return false;
}
$(document).ready(function(){
// инициализируем автокомлпит для формы ввода пользовательских тегов
$('#edit_tags_form .tags_string').autocomplete({
serviceUrl: '/json/suggest/',
minChars: 2,
delimiter: /(,|;)\s*/, // Разделитель для нескольких запросов, символ или регулярное выражение
maxHeight: 400,
width: 300,
zIndex: 9999,
deferRequestBy: 500,
params: { type: 'tags'}
});
// обработчик формы сохранения тегов.
if($('#edit_tags_form').size()){
$('#edit_tags_form').ajaxForm({
form: $('#edit_tags_form'),
beforeSubmit: ajaxFormBeforSubmit,
success: ajaxFormSuccess(function(json, statusText, xhr, jqForm){
var edit_tags_form = $('#edit_tags_form');
var target_id = $('input[name="ti"]',edit_tags_form).val();
var target_type = $('input[name="tt"]',edit_tags_form).val();
$('#post_'+target_id+' .tags li.fav').remove();
// вставим добавленные теги в список тегов к посту
for(k in json.user_tags){
$('#post_'+target_id+' .tags .favourites_edit_tags').before(', '+json.user_tags[k]+'');
}
$('#edit_tags_form').hide();
})
});
}
$('#lenta_notifications .close').click(function(){
$('#lenta_notifications').fadeOut();
$.post('/json/notifications/hint_get_more_blogs/', function(json){
if(json.messages == 'ok'){
}else{
show_system_error(json)
}
},'json');
return false;
})
});